package edu.uoc.tds.pec4.swingx;

import java.awt.Font;
import javax.swing.SwingConstants;
import edu.uoc.tds.pec4.common.RemotoInterface;
import edu.uoc.tds.pec4.model.Usuario;
import java.awt.Container;
import java.rmi.RemoteException;
import java.text.NumberFormat;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import edu.uoc.tds.pec4.i18n.GestorIdiomas;


/**
 *
 * @author TdsSoft
 */
public class PantallaEstadisticaResumen extends javax.swing.JDialog  {
    private static final long serialVersionUID = 1L;
    private Usuario usuario;
    private RemotoInterface remoto;
    private javax.swing.JPanel panelImagen;
    private javax.swing.JPanel panelResumenesTotales;
    private javax.swing.JPanel panelEstadisticaPruebas;
    private JLabel labelImagen;
    private JLabel labelPruebasCreadas;
    private JLabel labelPruebasCurso;
    private JLabel labelPruebasFinalizada;
    private JLabel labelEstudiantesInscritos;
    private JLabel labelMedallas;
    private JLabel labelUniversidades;
    private JTextField textPruebasCreadas;
    private JTextField textPruebasCurso;
    private JTextField textPruebasFinalizada;
    private JTextField textEstudiantesInscritos;
    private JTextField textMedallas;
    private JTextField textUniversidades;
    
    private JLabel labelMediaIsncripcion;
    private JLabel labelPaticipacionInscritos;
    private JLabel labelPuntuacionMedia;
    private JLabel labelMediaPreguntas;
    private JLabel labelAciertoPreguntas;
    private JTextField textMediaIsncripcion;
    private JTextField textPaticipacionInscritos;
    private JTextField textPuntuacionMedia;
    private JTextField textMediaPreguntas;
    private JTextField textAciertoPreguntas;
    private JToolBar jToolBarraHerramientas;
    private JButton jButtonSalir;

    public PantallaEstadisticaResumen(PantallaMenuPrincipal parent, boolean modal) throws RemoteException {
        super(parent, modal);
        this.remoto = parent.getRemoto();
        this.usuario = parent.getUsuario();
        initComponents();
        cargaDatos();
    }

    private void initComponents() {
//Declaraciones
        setLayout(null);
        setSize(635,600);
        Container contenedor = getContentPane();
        contenedor.setLayout(null);
        contenedor.add(getJToolBarraHerramientas());
        contenedor.add(getPanelImagen());
        panelImagen.add(getPanelResumenesTotales());
        panelImagen.add(getPanelEstadisticaPruebas());
        panelImagen.add(getLabelImagen());
        panelResumenesTotales.add(getLabelPruebasCreadas());
        panelResumenesTotales.add(getLabelPruebasCurso());
        panelResumenesTotales.add(getLabelPruebasFinalizada());
        panelResumenesTotales.add(getLabelEstudiantesInscritos());
        panelResumenesTotales.add(getLabelMedallas());      
        panelResumenesTotales.add(getLabelUniversidades());
        panelResumenesTotales.add(getTextPruebasCreadas());
        panelResumenesTotales.add(getTextPruebasCurso());
        panelResumenesTotales.add(getTextPruebasFinalizada());
        panelResumenesTotales.add(getTextEstudiantesInscritos());
        panelResumenesTotales.add(getTextMedallas());      
        panelResumenesTotales.add(getTextUniversidades());
        panelEstadisticaPruebas.add(getLabelMediaIsncripcion());
        panelEstadisticaPruebas.add(getLabelPaticipacionInscritos());
        panelEstadisticaPruebas.add(getLabelPuntuacionMedia());
        panelEstadisticaPruebas.add(getLabelMediaPreguntas());
        panelEstadisticaPruebas.add(getLabelAciertoPreguntas());
        panelEstadisticaPruebas.add(getTextMediaIsncripcion());
        panelEstadisticaPruebas.add(getTextPaticipacionInscritos());
        panelEstadisticaPruebas.add(getTextPuntuacionMedia());
        panelEstadisticaPruebas.add(getTextMediaPreguntas());
        panelEstadisticaPruebas.add(getTextAciertoPreguntas());
        //Datos ventana
        setTitle(GestorIdiomas.getMessage("PantallaEstadisticaResumen.Titulo"));
    }
     
    private JToolBar getJToolBarraHerramientas(){
        jToolBarraHerramientas = new JToolBar();
        jToolBarraHerramientas.add(getJButtonSalir());
        jToolBarraHerramientas.setRollover(true);
        jToolBarraHerramientas.setName(GestorIdiomas.getMessage("PantallaEstadisticaResumen.JToolBarraHerramientas")); 
        jToolBarraHerramientas.setRollover(true);
        jToolBarraHerramientas.setBounds(10, 10, 50, 30);

         return jToolBarraHerramientas;
    }
     private JLabel getLabelImagen(){
        labelImagen = new JLabel();
        labelImagen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/logoeOlympics3.png")));
        labelImagen.setBorder(null);
        labelImagen.setFocusable(false);
        labelImagen.setBounds(10, 10, 290, 462);
        return labelImagen;
    }

    private JLabel getLabelPruebasCreadas(){
         labelPruebasCreadas = new JLabel();
         labelPruebasCreadas.setBorder(null);
         labelPruebasCreadas.setBounds(15, 30, 160, 14);
         labelPruebasCreadas.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelPruebasCreadas"));
         return labelPruebasCreadas;
    }
     
    private JLabel getLabelPruebasCurso(){
         labelPruebasCurso = new JLabel();
         labelPruebasCurso.setBorder(null);
         labelPruebasCurso.setBounds(15, 65, 160, 14);
         labelPruebasCurso.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelPruebasCurso"));
         return labelPruebasCurso;
    }
     
    private JLabel getLabelPruebasFinalizada(){
         labelPruebasFinalizada = new JLabel();
         labelPruebasFinalizada.setBorder(null);
         labelPruebasFinalizada.setBounds(15, 100, 160, 14);
         labelPruebasFinalizada.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelPruebasFinalizada"));
         return labelPruebasFinalizada;
    }
     
    private JLabel getLabelEstudiantesInscritos(){
         labelEstudiantesInscritos = new JLabel();
         labelEstudiantesInscritos.setBorder(null);
         labelEstudiantesInscritos.setBounds(15, 135, 160, 14);
         labelEstudiantesInscritos.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelEstudiantesInscritos"));
         return labelEstudiantesInscritos;
    }

    private JLabel getLabelMedallas(){
         labelMedallas = new JLabel();
         labelMedallas.setBorder(null);
         labelMedallas.setBounds(15, 170, 160, 14);
         labelMedallas.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelMedallas"));
         return labelMedallas;
    }
 
    private JLabel getLabelUniversidades(){
         labelUniversidades = new JLabel();
         labelUniversidades.setBorder(null);
         labelUniversidades.setBounds(15, 200, 180, 14);
         labelUniversidades.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelUniversidades"));
         return labelUniversidades;
    }
      
    private JPanel getPanelImagen(){
        panelImagen = new JPanel();
        panelImagen.setBounds(10, 40, 600, 500);
        panelImagen.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        panelImagen.setLayout(null);
        return panelImagen;
    }

    private JTextField getTextPruebasCreadas(){
         textPruebasCreadas = new JTextField();
         textPruebasCreadas.setBounds(200, 30, 60, 16);
         textPruebasCreadas.setEnabled(false);
         textPruebasCreadas.setFont( new Font("Arial",Font.BOLD,12 ));
         textPruebasCreadas.setHorizontalAlignment(SwingConstants.RIGHT);
         return textPruebasCreadas;
    }
     
    private JTextField getTextPruebasCurso(){
         textPruebasCurso = new JTextField();
         textPruebasCurso.setBounds(200, 65, 60, 16);
         textPruebasCurso.setHorizontalAlignment(SwingConstants.RIGHT);
         textPruebasCurso.setFont( new Font("Arial",Font.BOLD,12 ));
         textPruebasCurso.setEnabled(false);
         return textPruebasCurso;
    }
     
    private JTextField getTextPruebasFinalizada(){
         textPruebasFinalizada = new JTextField();
         textPruebasFinalizada.setBounds(200, 100, 60, 16);
         textPruebasFinalizada.setHorizontalAlignment(SwingConstants.RIGHT);
         textPruebasFinalizada.setFont( new Font("Arial",Font.BOLD,12 ));
         textPruebasFinalizada.setEnabled(false);
         return textPruebasFinalizada;
    }
     
    private JTextField getTextEstudiantesInscritos(){
         textEstudiantesInscritos = new JTextField();
         textEstudiantesInscritos.setBounds(200, 135, 60, 16);
         textEstudiantesInscritos.setHorizontalAlignment(SwingConstants.RIGHT);
         textEstudiantesInscritos.setFont( new Font("Arial",Font.BOLD,12 ));
         textEstudiantesInscritos.setEnabled(false);
         return textEstudiantesInscritos;
    }

    private JTextField getTextMedallas(){
         textMedallas = new JTextField();
         textMedallas.setBounds(200, 170, 60, 16);
         textMedallas.setHorizontalAlignment(SwingConstants.RIGHT);
         textMedallas.setFont( new Font("Arial",Font.BOLD,12 ));
         textMedallas.setEnabled(false);
         return textMedallas;
    }
 
    private JTextField getTextUniversidades(){
         textUniversidades = new JTextField();
         textUniversidades.setBounds(200, 200, 60, 16);
         textUniversidades.setHorizontalAlignment(SwingConstants.RIGHT);
         textUniversidades.setFont( new Font("Arial",Font.BOLD,12 ));
         textUniversidades.setEnabled(false);
         return textUniversidades;
    }

    private JLabel getLabelMediaIsncripcion(){
         labelMediaIsncripcion = new JLabel();
         labelMediaIsncripcion.setBorder(null);
         labelMediaIsncripcion.setBounds(15, 30, 180, 14);
         labelMediaIsncripcion.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelMediaIsncripcion"));
         return labelMediaIsncripcion;
    }
    
    private JLabel getLabelPaticipacionInscritos(){
         labelPaticipacionInscritos = new JLabel();
         labelPaticipacionInscritos.setBorder(null);
         labelPaticipacionInscritos.setBounds(15, 65, 180, 14);
         labelPaticipacionInscritos.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelPaticipacionInscritos"));
         return labelPaticipacionInscritos;
    }
    
    private JLabel getLabelPuntuacionMedia(){
         labelPuntuacionMedia = new JLabel();
         labelPuntuacionMedia.setBorder(null);
         labelPuntuacionMedia.setBounds(15, 100, 180, 14);
         labelPuntuacionMedia.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelPuntuacionMedia"));
         return labelPuntuacionMedia;     
    }
    
    private JLabel getLabelMediaPreguntas(){
         labelMediaPreguntas = new JLabel();
         labelMediaPreguntas.setBorder(null);
         labelMediaPreguntas.setBounds(15, 135, 180, 14);
         labelMediaPreguntas.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelMediaPreguntas"));
         return labelMediaPreguntas;     
    }
    
    private JLabel getLabelAciertoPreguntas(){
         labelAciertoPreguntas = new JLabel();
         labelAciertoPreguntas.setBorder(null);
         labelAciertoPreguntas.setBounds(15, 170, 180, 14);
         labelAciertoPreguntas.setText(GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetLabelAciertoPreguntas"));
         return labelAciertoPreguntas;     
    }
      
    private JTextField getTextMediaIsncripcion(){
         textMediaIsncripcion = new JTextField();
         textMediaIsncripcion.setBounds(200, 30, 60, 16);
         textMediaIsncripcion.setHorizontalAlignment(SwingConstants.RIGHT);
         textMediaIsncripcion.setFont( new Font("Arial",Font.BOLD,12 ));
         textMediaIsncripcion.setEnabled(false);
         return textMediaIsncripcion;
    }

    private JTextField getTextPaticipacionInscritos(){
         textPaticipacionInscritos = new JTextField();
         textPaticipacionInscritos.setBounds(200, 65, 60, 16);
         textPaticipacionInscritos.setHorizontalAlignment(SwingConstants.RIGHT);
         textPaticipacionInscritos.setFont( new Font("Arial",Font.BOLD,12 ));
         textPaticipacionInscritos.setEnabled(false);
         return textPaticipacionInscritos;
    }

    private JTextField getTextPuntuacionMedia(){
         textPuntuacionMedia = new JTextField();
         textPuntuacionMedia.setBounds(200, 100, 60, 16);
         textPuntuacionMedia.setHorizontalAlignment(SwingConstants.RIGHT);
         textPuntuacionMedia.setFont( new Font("Arial",Font.BOLD,12 ));
         textPuntuacionMedia.setEnabled(false);
         return textPuntuacionMedia;
    }

    private JTextField getTextMediaPreguntas(){
         textMediaPreguntas = new JTextField();
         textMediaPreguntas.setBounds(200, 135, 60, 16);
         textMediaPreguntas.setHorizontalAlignment(SwingConstants.RIGHT);
         textMediaPreguntas.setFont( new Font("Arial",Font.BOLD,12 ));
         textMediaPreguntas.setEnabled(false);
         return textMediaPreguntas;
    }

    private JTextField getTextAciertoPreguntas(){
         textAciertoPreguntas = new JTextField();
         textAciertoPreguntas.setBounds(200, 170, 60, 16);
         textAciertoPreguntas.setHorizontalAlignment(SwingConstants.RIGHT);
         textAciertoPreguntas.setFont( new Font("Arial",Font.BOLD,12 ));
         textAciertoPreguntas.setEnabled(false);
         return textAciertoPreguntas;
    }
        
    private JPanel getPanelResumenesTotales(){
        panelResumenesTotales = new JPanel();
        panelResumenesTotales.setBounds(300, 20, 290, 240);
        panelResumenesTotales.setBorder(javax.swing.BorderFactory.createTitledBorder(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetPanelResumenesTotales"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 14), null));
        panelResumenesTotales.setLayout(null);
        return panelResumenesTotales;
    }

    private JPanel getPanelEstadisticaPruebas(){
        panelEstadisticaPruebas = new JPanel();
        panelEstadisticaPruebas.setBounds(300, 265, 290, 210);
        panelEstadisticaPruebas.setBorder(javax.swing.BorderFactory.createTitledBorder(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.GetPanelEstadisticaPruebas"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 14), null));
        panelEstadisticaPruebas.setLayout(null);
        return panelEstadisticaPruebas;
    }
    
            
    private JButton getJButtonSalir(){
        jButtonSalir = new JButton();
        jButtonSalir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/Exit.png")));
        jButtonSalir.setFocusable(false);
        jButtonSalir.setBounds(0, 0, 30, 30);
        jButtonSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonSalirActionPerformed(evt);
            }
        });
        return jButtonSalir;
    }
    
    private void jButtonSalirActionPerformed(java.awt.event.ActionEvent evt) {                              
        this.setVisible(false);
    }

    private void cargaDatos() {
        int i= -1;
        int i1= -1;
        float f = -1;
        double d = -1.0;
               
        try {
        // PRUEBAS CREADAS
            i = remoto.numPrueba();
            textPruebasCreadas.setText(Integer.toString(i));
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_numPrueba"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
        
        try {
        // PRUEBAS EN CURSO
            i = remoto.pruebasEnCurso();
            textPruebasCurso.setText(Integer.toString(i));
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_numPruebaEnCurso"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
        
        try {
        // PRUEBAS FINALIZADAS
            i = remoto.pruebasFinalizadas();
            textPruebasFinalizada.setText(Integer.toString(i));
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_pruebasFinalizadas"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
        
        try {
        // ESTUDIANTES INSCRITOS    
            i = remoto.estudiantesInscritos();
            textEstudiantesInscritos.setText(Integer.toString(i));
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_estudiantesInscritos"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
        
        try {
        //MEDALLAS
            i = remoto.medallas();
            textMedallas.setText(Integer.toString(i));
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_medallas"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
        
        try {
        // UNIVERSIDADES PARTICIPANTES
            i = remoto.universidadesParticipantes();
            textUniversidades.setText(Integer.toString(i));
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_universidadesParticipantes"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
        
        try {
        // MEDIA ESTUDIANTES INSCRITOS
             //Denominador --> número de pruebas distintas y cerradas en inscripción.
             i = remoto.pruebasInscripcion();
             if(i==0){
                 textMediaIsncripcion.setText("-");
             }else{
                 i1 = remoto.inscritosPruebasConCierre();
                 NumberFormat nf = NumberFormat.getInstance();
                 nf.setMaximumFractionDigits(2);
                 textMediaIsncripcion.setText( nf.format((float) (i1/i*1.0)));
             } 
           } catch (RemoteException ex) {
                 JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_pruebasInscripcion"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }

       try {
       //PARTICIPANTES SOBRE INSCRITOS
            String s=remoto.participantesDeInscritos();
            textPaticipacionInscritos.setText(s);
           
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_relacionInscritos_participantes"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
        }
          
       try {
       //PUNTUACIÓN MEDIA
             d = remoto.puntuacionMedia();
             NumberFormat nf = NumberFormat.getInstance();
             nf.setMinimumFractionDigits(2);
             nf.setMaximumFractionDigits(2);
             textPuntuacionMedia.setText(nf.format(d));
       } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_puntuacionMedia"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
       }
       
       try {
       //PREGUNTAS MEDIAS
            d = remoto.preguntasMedias();
            NumberFormat nf = NumberFormat.getInstance();
            nf.setMaximumFractionDigits(2);
            nf.setMinimumFractionDigits(2);
            textMediaPreguntas.setText(nf.format(d));
//            textMediaPreguntas.setText(Double.toString(d));
       } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_preguntasMedias"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
       }
       
       try {
       //ACIERTOS SOBRE PREGUNTAS
            String s = remoto.aciertosPreguntas();
            textAciertoPreguntas.setText(s);
       } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, GestorIdiomas.getMessage("PantallaEstadisticaResumen.ErrorObjetoRemoto_relacionAcietosPreguntas"), GestorIdiomas.getMessage("ShowMessageDialog.Error"), 0);
       }       
    }
}
